package com.itany.corejava.code04_循环结构;

import java.util.Scanner;

/**
 * @author 石小俊
 * @date 2023年04月11日 14:49
 * 斐波那契数列: 1 1 2 3 5 8 13 ... N, 前两项之和等于第三项
 * 在控制输入需要打印几个数, 输出对应数量的数字
 */
public class Test07_斐波那契数列 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入斐波那契数列的数量:");
        int num = sc.nextInt();
        // 如果只有一项直接打印1
        if(num == 1){
            System.out.println("1");
        }
        if(num >= 2){
            // 打印前两项的值
            System.out.print("1 1 ");
            // 定义前两项的值
            // N-2
            int a = 1;
            // N-1
            int b = 1;
            // 打印第三项开始的值
            for(int i = 3; i <= num; i++){
                // 当前项 = 前两项之和
                int n = a + b;
                // 当i自增之和,前两项的值随之改变
                // 定义N-2项的值,此时的N-2项的值即为上一次N-1项的值
                a = b;
                // 定义N-1项的值,此时N-1项的值即为上一次N项的值
                b = n;
                System.out.print(n+" ");
            }
        }

    }
}
